﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
using System.IO;
using System.Text.RegularExpressions;

namespace CargaDeDatos.Clases
{
    class herramientas
    {

        // Convertir Fecha de Nacimiento de int a dateMysql

        public static string FechaNac(String fecha)
        {
            string fechaFinal;
            string mes = fecha;
            string año = fecha;
            mes = mes.Remove(mes.Length - 2);
            año = ReverseString(año);
            if (año.Length == 4)
            {
                año = año.Remove(año.Length - 2);
                año = ReverseString(año);
            }
            else
            {
                año = año.Remove(año.Length - 1);
                año = ReverseString(año);
            }

            if (mes.Length == 2)
            {
                if (Convert.ToInt32(año) <= 20)
                {
                    fechaFinal = "20" + año + "-" + mes + "-01";
                }
                else
                {
                    fechaFinal = "19" + año + "-" + mes + "-01";

                }
            }
            else
            {
                if (Convert.ToInt32(año) <= 20)
                {
                    fechaFinal = "20" + año + "-0" + mes + "-01";
                }
                else
                {
                    fechaFinal = "19" + año + "-0" + mes + "-01";
                }

            }
            return fechaFinal;
        }

        // Convertir Fecha de Nacimiento de afiliado de int a dateMysql

        public static string FechaNacAfil(String fecha)
        {


            string fechaFinal;
            string mes = fecha;
            string año = fecha;
            string dia = fecha;
            dia = dia.Remove(dia.Length - 4);
            mes = mes.Remove(mes.Length - 2);
            mes = ReverseString(mes);
            año = ReverseString(año);
            
            if ( dia.Length == 1)
            {   
                mes = mes.Remove(mes.Length - 1);
                año = año.Remove(año.Length - 3);
                año = ReverseString(año);
                mes = ReverseString(mes);
            
            }
            else
            {
                if ( dia.Length == 2 )
                
            {
                año = año.Remove(año.Length - 4);
                mes = mes.Remove(mes.Length - 2);
                año = ReverseString(año);
                mes = ReverseString(mes);
            }
            }

            if (Convert.ToInt32(año) < 15)
            {
                fechaFinal = "20" + año + "-" + mes + "-" + dia;

            }
            else
            {
                fechaFinal = "19" + año + "-" + mes + "-" + dia;
            }

            return fechaFinal;
        }


        // Invierte string's
        public static string ReverseString(string s)
        {
            char[] arr = s.ToCharArray();
            Array.Reverse(arr);
            return new string(arr);
        }

        // Calcula el Parentesco
        public static int Parentesco(string codigo)
        {
       
            codigo = codigo.Remove(0,codigo.Length - 2);
            switch (codigo)
            {
                case "00": return 10;
                    break;
                case "01": return 11;
                    break;
                case "02": return 12;
                    break;
                case "03": return 13;
                    break;
                case "04": return 14;
                    break;
                case "05": return 15;
                    break;
                case "06": return 16;
                    break;
                case "07": return 17;
                    break;
                case "08": return 18;
                    break;
                case "09": return 19;
                    break;
                case "10": return 20;
                    break;
                case "11": return 21;
                    break;
                case "12": return 22;
                    break;
                case "13": return 23;
                    break;
                case "14": return 24;
                    break;
                case "15": return 25;
                    break;
                case "16": return 26;
                    break;
                case "17": return 27;
                    break;
                case "18": return 28;
                    break;
                case "19": return 29;
                    break;
                case "20": return 30;
                    break;
                case "21": return 31;
                    break;
                case "22": return 32;
                    break;
                case "23": return 33;
                    break;
                case "24": return 34;
                    break;
                case "25": return 35;
                    break;
                case "26": return 36;
                    break;
                case "27": return 37;
                    break;
                case "28": return 38;
                    break;
                case "29": return 39;
                    break;
                case "30": return 40;
                    break;
                case "31": return 41;
                    break;
                case "32": return 42;
                    break;
                case "33": return 43;
                    break;
                case "34": return 44;
                    break;
                case "35": return 45;
                    break;
                case "36": return 46;
                    break;
                case "37": return 47;
                    break;
                case "38": return 48;
                    break;
                case "39": return 49;
                    break;
                case "40": return 50;
                    break;
                default: return 1;
                    break;
            }
           
        }



        // Convertir Fecha de pago de int a dateMysql

        public static string FechaPago(String fecha)
        {
            string fechaFinal;
            string mes = fecha;
            string año = fecha;
            año = año.Remove(año.Length - 2);
            mes = ReverseString(mes);
            mes = mes.Remove(mes.Length - 4);
            mes = ReverseString(mes);
           
            fechaFinal =  año + "-" + mes + "-01";
               
            return fechaFinal;
        }


        public static string RecortarString(String strToEsc)
        {
        if (strToEsc.IndexOf("'") > -1)
        {
        strToEsc = strToEsc.Replace("'", @"");
        }
        if (strToEsc.IndexOf("\\") > -1)
        {
            strToEsc = strToEsc.Replace("\\", @"");
        }
        return strToEsc;

        }

       

        public static string StringToDecimal(String strToEsc)
        {
            if (strToEsc.IndexOf(",") > -1)
            {
                strToEsc = strToEsc.Replace(",", @".");
            }
            return strToEsc;

        }


        public static string PuntoToComa(String strToEsc)
        {
            if (strToEsc.IndexOf(".") > -1)
            {
                strToEsc = strToEsc.Replace(".", @",");
            }
            return strToEsc;

        }

        public static void CrearCiudad(String CodPostal, string Nombre,String empresa)
        {   
            Properties.Settings.Default.db = empresa;

            string query = "insert into ciudades values ('" + CodPostal + "','" + Nombre + "',1)";
            ejecutar CiudadObject = new ejecutar();
            MySqlDataReader Ciudad = CiudadObject.EjecutarSQL(query);
            CiudadObject.cerrar();

        }

        public static void EscribirArchivo(string linea)
        {
            StreamWriter sw = new StreamWriter(Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + "afiliado.txt");

            //Write a line of text

           sw.WriteLine(linea);

            //Close the file

            sw.Close();
        }

        public static string cortarEspacios(string cadena)
        {
            cadena = Regex.Replace(cadena, @"\s+", " ");

            return cadena;
        }



        public static string[] ListarPlanes(String Planes)
        {
            char[] delimiterChars = { ',' };
            Planes = PuntoToComa(Planes);
            string[] ListaDePlanes = Planes.Split(delimiterChars);

            return ListaDePlanes;
            
        }

        public static string CortarApellido (String apellido)
        {
            apellido = cortarEspacios(apellido);

            char[] delimiterChars = { ' ' };

            string[] words = apellido.Split(delimiterChars);

            string apellidocompleto = "";

            switch (words.Length)
            {
                case 1: apellidocompleto = words[0];
                    break;
                case 2: apellidocompleto = words[0];
                    break;
                case 3: apellidocompleto = words[0];
                    break;
                case 4: apellidocompleto = words[0] + " " + words[1];
                    break;
                case 5: apellidocompleto = words[0] + " " + words[1] + " " + words[2];
                    break;
            }

            return RecortarString(apellidocompleto);
        }

        public static string CortarNombre(String nombre)
        {
            nombre = cortarEspacios(nombre);

            char[] delimiterChars = { ' ' };

            string[] words = nombre.Split(delimiterChars);

            string nombrecompleto = "";

            switch (words.Length)
            {
                case 1: nombrecompleto = "";
                    break;
                case 2: nombrecompleto = words[1];
                    break;
                case 3: nombrecompleto = words[1] + " " + words[2];
                    break;
                case 4: nombrecompleto = words[2] + " " + words[3];
                    break;
                case 5: nombrecompleto = words[3] + " " + words[4];
                    break;
            }
            
            return RecortarString(nombrecompleto);
        }
    }
}

